www.gusucode.com > LTE基带收发仿真系统matlab源码程序 > LTE baseband simulation/layer_mapping.m
function layerSymb = layer_mapping(modSymbCell,nCW,nLayer,preProcess) % 功能:层映射 将每个码字上复值调制符号映射带一个或多个层上 % 输入:modSymbCell:复值调制符号 nLayer:层数 % preProcess:预处理模式,singleAnt,tranmitDiversity, spatialMultiplexing % 输出:layerSymb:层上的复值符号 % % % Author: 程式小组(徐萌 张妙 张晓庆) % Date: 2010-07-11 % ========================================================== % 单天线传输,层映射符号和调制后符号一致 if strcmp(preProcess,'singleAnt') layerSymb = modSymbCell{1}; % 传输分集下,层映射方式 elseif strcmp(preProcess,'tranmitDiversity') if nLayer == 2 len = length(modSymbCell{1}); layerSymb = zeros(nLayer,len/2); layerSymb(1,:) = modSymbCell{1}(1:2:end-1); layerSymb(2,:) = modSymbCell{1}(2:2:end-0); elseif nLayer == 4 % 如果码字个数不是4的整数倍,则在末尾添加2个0 码字数必为偶数 len = length(modSymbCell{1}); if mod(len,4)~=0 modSymbCell{1} = cat(2,modSymbCell{1},[0 0]); len = len+2; end M_LYAER_SYMB = len/4; layerSymb = zeros(nLayer,M_LYAER_SYMB); layerSymb(1,:) = modSymbCell{1}(1:4:end-3); layerSymb(2,:) = modSymbCell{1}(2:4:end-2); layerSymb(3,:) = modSymbCell{1}(3:4:end-1); layerSymb(4,:) = modSymbCell{1}(4:4:end-0); end % 空间复用下,层映射方式 elseif strcmp(preProcess,'spatialMultiplexing') if nCW == 1 && nLayer == 1 layerSymb = modSymbCell{1}; elseif nCW == 2 && nLayer == 2 len = length(modSymbCell{1}); layerSymb = zeros(nLayer,len); layerSymb(1,:) = modSymbCell{1}; layerSymb(2,:) = modSymbCell{2}; elseif nCW == 1 && nLayer == 2 len = length(modSymbCell{1}); layerSymb = zeros(nLayer,len/2); layerSymb(1,:) = modSymbCell{1}(1:2:end-1); layerSymb(2,:) = modSymbCell{1}(2:2:end-0); elseif nCW == 2 && nLayer == 3 len = length(modSymbCell{1}); layerSymb = zeros(nLayer,len); layerSymb(1,:) = modSymbCell{1}; layerSymb(2,:) = modSymbCell{2}(1:2:end-1); layerSymb(3,:) = modSymbCell{2}(2:2:end-0); elseif nCW == 2 && nLayer == 4 len = length(modSymbCell{1}); layerSymb = zeros(nLayer,len/2); layerSymb(1,:) = modSymbCell{1}(1:2:end-1); layerSymb(2,:) = modSymbCell{1}(2:2:end-0); layerSymb(3,:) = modSymbCell{2}(1:2:end-1); layerSymb(4,:) = modSymbCell{2}(2:2:end-0); end end